CSSã³ã³ããã¯ãšãªçµæç¡å¹åãšã³ãžã³ãæ·±ãæãäžããã¯ãšãªãã£ãã·ã¥ç®¡çãããã©ãŒãã³ã¹æé©åãããã³çŸä»£ã®ãŠã§ãéçºã«ããããã¹ããã©ã¯ãã£ã¹ãæ¢æ±ããŸãã
CSSã³ã³ããã¯ãšãªçµæç¡å¹åãšã³ãžã³ïŒã¯ãšãªãã£ãã·ã¥ç®¡ç
CSSã³ã³ããã¯ãšãªã¯ãã¬ã¹ãã³ã·ããŠã§ããã¶ã€ã³ã«ãããéèŠãªé²æ©ã衚ããŠãããéçºè ã¯ãã¥ãŒããŒãã§ã¯ãªãã³ã³ããèŠçŽ ã®ãµã€ãºã«åºã¥ããŠã¹ã¿ã€ã«ãé©çšã§ããŸããããã«ãããé©å¿æ§ãšåçãªãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ãäœæããäžã§åäŸã®ãªãæè»æ§ãæäŸãããŸãããããããã®åã«ã¯ããã©ãŒãã³ã¹ãžã®åœ±é¿ã管çãããšãã課é¡ã䌎ããŸããç¹ã«ããã©ãŠã¶ããã€ãã©ã®ããã«ãããã®ã¯ãšãªãåè©äŸ¡ããããæ±ºå®ããæ¹æ³ã«é¢ãããã®ã§ãããã®èšäºã§ã¯ãCSSã³ã³ããã¯ãšãªçµæç¡å¹åãšã³ãžã³ã®è€éãªè©³çŽ°ã«æ·±ãå ¥ã蟌ã¿ãã¯ãšãªãã£ãã·ã¥ç®¡çãšã倿§ãªãã©ãŠã¶ããã³ã°ããŒãã«ãªããã€ã¹å šäœã§ã®ããã©ãŒãã³ã¹æé©åæŠç¥ã«çŠç¹ãåœãŠãŸãã
ã³ã³ããã¯ãšãªã®çè§£
ç¡å¹åãšã³ãžã³ã®è€éãã«æ·±ãå ¥ã蟌ãåã«ãã³ã³ããã¯ãšãªãšã¯äœããç°¡åã«åŸ©ç¿ããŸãããããã¥ãŒããŒãã«äŸåããã¡ãã£ã¢ã¯ãšãªãšã¯ç°ãªããã³ã³ããã¯ãšãªã䜿çšãããšãèŠçŽ ããã®èŠªã³ã³ããã®ããããã®å¯žæ³ã«åºã¥ããŠã¹ã¿ã€ã«èšå®ã§ããŸããããã«ãããã³ã³ããŒãã³ãã¬ãã«ã®ã¬ã¹ãã³ã·ãæ§ãå¯èœã«ãªããåå©çšå¯èœã§é©å¿æ§ã®é«ãUIèŠçŽ ã®äœæã容æã«ãªããŸãã
äŸïŒ
ã³ã³ããã®å¹
ã«åºã¥ããŠæ
å ±ãç°ãªãæ¹æ³ã§è¡šç€ºããã«ãŒãã³ã³ããŒãã³ããèããŠã¿ãŸãããã@containerã«ãŒã«ã䜿çšããåºæ¬çãªäŸã以äžã«ç€ºããŸãã
.card {
container-type: inline-size;
border: 1px solid #ccc;
padding: 1em;
}
@container (min-width: 300px) {
.card {
background-color: #f0f0f0;
}
}
@container (min-width: 500px) {
.card {
font-size: 1.2em;
}
}
ãã®äŸã§ã¯ãcontainer-type: inline-sizeããããã£ãã«ãŒãããã®åå«ã®ã³ã³ãããšããŠç¢ºç«ããŠããŸããæ¬¡ã«ã@containerã«ãŒã«ã¯ãã«ãŒãã®ã€ã³ã©ã€ã³ãµã€ãºïŒå¹
ïŒã«åºã¥ããŠç°ãªãã¹ã¿ã€ã«ãé©çšããŸããã«ãŒãã®å¹
ã300px以äžã®å Žåãèæ¯è²ãå€ãããŸãã500px以äžã®å Žåããã©ã³ããµã€ãºãå¢å ããŸãã
ç¡å¹åãšã³ãžã³ïŒã¯ãšãªãã©ã®ããã«åè©äŸ¡ãããã
å¹ççãªã³ã³ããã¯ãšãªã®ããã©ãŒãã³ã¹ã®æ žã¯ãçµæç¡å¹åãšã³ãžã³ã«ãããŸãããã®ãšã³ãžã³ã¯ãã³ã³ããã¯ãšãªã®çµæããã€ç¡å¹ã«ãªããåè©äŸ¡ãå¿ èŠã«ãªããã倿ãã圹å²ãæ ã£ãŠããŸãããã¹ãŠã®ã³ã³ããã¯ãšãªãåžžã«åè©äŸ¡ãããšããåçŽãªã¢ãããŒãã¯ãç¹ã«è€éãªã¬ã€ã¢ãŠãã§ã¯æ¥µããŠéå¹ççã§ãããã®ããããã®ãšã³ãžã³ã¯æŽç·Žããããã£ãã·ã³ã°ããã³ç¡å¹åæŠç¥ãæ¡çšããŠããŸãã
ãã£ãã·ã¥ç®¡ç
ãã©ãŠã¶ã¯ã³ã³ããã¯ãšãªçµæã®ãã£ãã·ã¥ãç¶æããŠããŸãããã®ãã£ãã·ã¥ã¯ãåã¯ãšãªè©äŸ¡ã®çµæãæ ŒçŽãããããã³ã³ããèŠçŽ ãšæºããããç¹å®ã®æ¡ä»¶ã«é¢é£ä»ããŸãããã©ãŠã¶ãèŠçŽ ã®ã¹ã¿ã€ã«ã決å®ããå¿ èŠãããå ŽåããŸããã£ãã·ã¥ããã§ãã¯ããŠãé¢é£ããã³ã³ããã¯ãšãªã«å¯ŸããŠæå¹ãªçµæãæ¢ã«ååšãããã©ããã確èªããŸãã
ãã£ãã·ã¥ã®äž»èŠãªåŽé¢ïŒ
- ããŒã€ã³ã°ïŒãã£ãã·ã¥ã¯ãã³ã³ããèŠçŽ ãšç¹å®ã®æ¡ä»¶ïŒäŸïŒ
min-width: 300pxïŒã«ãã£ãŠããŒä»ããããŸãã - ã¹ãã¬ãŒãžïŒãã£ãã·ã¥ãããçµæã«ã¯ãæ¡ä»¶ãæºãããããšãã«é©çšãããã¹ãèšç®æžã¿ã¹ã¿ã€ã«ãå«ãŸããŸãã
- æå¹æéïŒãã£ãã·ã¥ãããçµæã«ã¯æå¹æéããããŸããç¡å¹åãšã³ãžã³ã¯ããã£ãã·ã¥ãããçµæãå€ããªã£ããšã¿ãªãããåè©äŸ¡ãå¿ èŠã«ãªãææã決å®ããŸãã
ç¡å¹åããªã¬ãŒ
ç¡å¹åãšã³ãžã³ã¯ãã³ã³ããã¯ãšãªçµæã®æå¹æ§ã«åœ±é¿ãäžããå¯èœæ§ã®ããæ§ã ãªã€ãã³ããç£èŠããŸãããããã®ã€ãã³ãã¯ãé¢é£ããã¯ãšãªã®åè©äŸ¡ãããªã¬ãŒããŸãã
äžè¬çãªç¡å¹åããªã¬ãŒïŒ
- ã³ã³ããã®ãªãµã€ãºïŒã³ã³ããèŠçŽ ã®å¯žæ³ã倿Žãããå ŽåããŠãŒã¶ãŒæäœïŒäŸïŒãŠã£ã³ããŠã®ãªãµã€ãºïŒãŸãã¯ããã°ã©ã ã«ããæäœïŒäŸïŒJavaScriptã«ããã³ã³ããã®å¹ 倿ŽïŒã®ããããã«ãã£ãŠãé¢é£ããã³ã³ããã¯ãšãªã¯åè©äŸ¡ãããªããã°ãªããŸããã
- ã³ã³ãã³ãã®å€æŽïŒã³ã³ããå ã®ã³ã³ãã³ãã®è¿œå ãåé€ããŸãã¯å€æŽã¯ããã®å¯žæ³ã«åœ±é¿ãäžããçµæãšããŠã³ã³ããã¯ãšãªã®æå¹æ§ã«åœ±é¿ãäžããå¯èœæ§ããããŸãã
- ã¹ã¿ã€ã«ã®å€æŽïŒã³ã³ããã®ãµã€ãºãã¬ã€ã¢ãŠãã«åœ±é¿ãäžããã¹ã¿ã€ã«ã鿥çã«ã§ã倿Žãããšãç¡å¹åãããªã¬ãŒãããå¯èœæ§ããããŸããããã«ã¯ãããŒãžã³ãããã£ã³ã°ãããŒããŒããã©ã³ããµã€ãºãããã³ãã®ä»ã®ã¬ã€ã¢ãŠãé¢é£ããããã£ã®å€æŽãå«ãŸããŸãã
- ãã¥ãŒããŒãã®å€æŽïŒã³ã³ããã¯ãšãªã¯ãã¥ãŒããŒãã«çŽæ¥é¢é£ä»ããããŠããŸãããããã¥ãŒããŒãã®ãµã€ãºå€æŽã¯ãç¹ã«æµåçãªã¬ã€ã¢ãŠãã«ãããŠãã³ã³ããã®ãµã€ãºã«éæ¥çã«åœ±é¿ãäžããå¯èœæ§ããããŸãã
- ãã©ã³ãã®èªã¿èŸŒã¿ïŒã³ã³ããå ã§äœ¿çšãããŠãããã©ã³ãã倿Žããããšãããã¹ãã®ãµã€ãºãšã¬ã€ã¢ãŠãã«åœ±é¿ãäžããæœåšçã«ã³ã³ããã®å¯žæ³ã«åœ±é¿ãäžããã¯ãšãªãç¡å¹ã«ããå¯èœæ§ããããŸããããã¯ãéåæã§èªã¿èŸŒãŸãããŠã§ããã©ã³ãã«ãšã£ãŠç¹ã«éèŠã§ãã
- ã¹ã¯ããŒã«ã€ãã³ãïŒäžè¬çã§ã¯ãããŸããããã³ã³ããå ã®ã¹ã¯ããŒã«ã€ãã³ãã¯ãã¹ã¯ããŒã«ãã³ã³ããã®å¯žæ³ãã¬ã€ã¢ãŠãã«åœ±é¿ãäžããå ŽåïŒäŸïŒã¹ã¯ããŒã«ã«ãã£ãŠããªã¬ãŒãããã¢ãã¡ãŒã·ã§ã³ãã³ã³ãããµã€ãºã倿Žããå ŽåïŒãç¡å¹åãããªã¬ãŒããå¯èœæ§ããããŸãã
æé©åæŠç¥
ç¡å¹åãšã³ãžã³ãå¹ççã«ç®¡çããããšã¯ãã¹ã ãŒãºã§ã¬ã¹ãã³ã·ããªãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãç¶æããããã«äžå¯æ¬ ã§ããèæ ®ãã¹ãããã€ãã®æé©åæŠç¥ã以äžã«ç€ºããŸãã
1. ãããŠã³ã¹ãšã¹ããããªã³ã°
é »ç¹ãªãªãµã€ãºãã³ã³ãã³ãã®å€æŽã¯ãç¡å¹åã€ãã³ãã®æ°Ÿæ¿«ãåŒãèµ·ããããã©ãŠã¶ãå§åããå¯èœæ§ããããŸãããããŠã³ã¹ãšã¹ããããªã³ã°ã®æè¡ã¯ããã®åé¡ã®è»œæžã«åœ¹ç«ã¡ãŸãã
- ãããŠã³ã¹ïŒé¢æ°ãæåŸã«åŒã³åºãããŠããäžå®ã®æéãçµéãããŸã§ããã®é¢æ°ã®å®è¡ãé å»¶ãããŸããããã¯ãäžé£ã®é«éãªã€ãã³ãïŒäŸïŒãªãµã€ãºïŒã®åŸã颿°ãäžåºŠã ãå®è¡ãããã·ããªãªã§åœ¹ç«ã¡ãŸãã
- ã¹ããããªã³ã°ïŒé¢æ°ãå®è¡ãããé »åºŠãå¶éããŸããããã«ãããæå®ãããæéééå ã§é¢æ°ãæå€§1åå®è¡ãããããšãä¿èšŒãããŸããããã¯ãã€ãã³ããé »ç¹ã«çºçããŠããå Žåã§ãã颿°ã宿çã«å®è¡ãããã·ããªãªã§åœ¹ç«ã¡ãŸãã
äŸïŒJavaScriptã§ã®ãããŠã³ã¹ïŒïŒ
function debounce(func, delay) {
let timeout;
return function(...args) {
clearTimeout(timeout);
timeout = setTimeout(() => {
func.apply(this, args);
}, delay);
};
}
const resizeHandler = () => {
// Code to handle container resize and potentially update styles
console.log("Container resized!");
};
const debouncedResizeHandler = debounce(resizeHandler, 250); // Delay of 250ms
window.addEventListener("resize", debouncedResizeHandler);
2. äžå¿ èŠãªã¹ã¿ã€ã«å€æŽãæå°éã«æãã
ã³ã³ããã®å¯žæ³ãã¬ã€ã¢ãŠãã«çŽæ¥åœ±é¿ããªãé »ç¹ãªã¹ã¿ã€ã«å€æŽã¯é¿ããŠãã ãããäŸãã°ãã³ã³ããå ã®èŠçŽ ã®è²ã倿ŽããŠãããã®è²ã®å€æŽãèŠçŽ ã®ãµã€ãºã«åœ±é¿ãäžããªãéãïŒäŸïŒç°ãªãè²ã«ããç°ãªããã©ã³ãã¬ã³ããªã³ã°ç¹æ§ã®ããïŒãã³ã³ããã¯ãšãªãç¡å¹ã«ãªãå¯èœæ§ã¯äœãã§ãã
3. ã³ã³ããæ§é ãæé©åãã
ã³ã³ããã®æ§é ãæ éã«æ€èšããŠãã ãããæ·±ããã¹ããããã³ã³ããã¯ãã¯ãšãªè©äŸ¡ã®è€éããå¢å€§ãããå¯èœæ§ããããŸããå¯èœãªéãã³ã³ããã®éå±€ãåçŽåããè©äŸ¡ãå¿ èŠãªã¯ãšãªã®æ°ãæžãããŠãã ããã
4. contain-intrinsic-sizeã䜿çšãã
contain-intrinsic-sizeããããã£ã䜿çšãããšãã³ã³ããèŠçŽ ã®ã³ã³ãã³ãããŸã ããŒããããŠããªãããé
å»¶ããŒããããŠããå Žåã«ããã®åºæã®ãµã€ãºãæå®ã§ããŸããããã«ãããããŒãããã»ã¹äžã®ã¬ã€ã¢ãŠãã·ãããäžèŠãªã³ã³ããã¯ãšãªã®åè©äŸ¡ãé²ãããšãã§ããŸãã
äŸïŒ
.container {
container-type: inline-size;
contain-intrinsic-size: 500px; /* Assume an intrinsic width of 500px */
}
5. JavaScriptã«ããæ¡ä»¶ä»ãã¹ã¿ã€ãªã³ã°ïŒæ§ããã«äœ¿çšããïŒ
å Žåã«ãã£ãŠã¯ãã³ã³ããã®å¯žæ³ã«åºã¥ããŠæ¡ä»¶ä»ãã§ã¹ã¿ã€ã«ãé©çšããããã«JavaScriptã䜿çšããæ¹ãããã©ãŒãã³ã¹ãè¯ãããšããããŸãããããããã®ã¢ãããŒãã¯ã³ãŒãã®è€éããå¢ããCSSã³ã³ããã¯ãšãªã䜿çšããå©ç¹ãæžããå¯èœæ§ããããããæ§ããã«äœ¿çšãã¹ãã§ãã
äŸïŒ
const container = document.querySelector('.container');
if (container.offsetWidth > 500) {
container.classList.add('large-container');
} else {
container.classList.remove('large-container');
}
éèŠãªæ³šæïŒå¯èœãªéãCSSã³ã³ããã¯ãšãªãåªå ããŠãã ããããããã¯ããåªãã宣èšçãªå¶åŸ¡ãæäŸããå€ãã®å Žåãããä¿å®ããããã³ãŒãã«ã€ãªãããŸããCSSããŒã¹ã®ãœãªã¥ãŒã·ã§ã³ãå®çŸäžå¯èœãŸãã¯ããã©ãŒãã³ã¹ãäœãå Žåã«ã®ã¿JavaScriptã䜿çšããŠãã ããã
6. ããã©ãŒãã³ã¹ç£èŠãšãããã¡ã€ãªã³ã°
ã³ã³ããã¯ãšãªã®è©äŸ¡ã«é¢é£ããæœåšçãªããã«ããã¯ãç¹å®ããããã«ããŠã§ããµã€ãã®ããã©ãŒãã³ã¹ã宿çã«ç£èŠããã³ãããã¡ã€ãªã³ã°ããŠãã ããããã©ãŠã¶ã®éçºè ããŒã«ïŒäŸïŒChrome DevToolsãFirefox Developer ToolsïŒã¯ãããã©ãŒãã³ã¹ãåæããæé©åã®é åãç¹å®ããããã®åŒ·åãªããŒã«ãæäŸããŸãã
ã°ããŒãã«ãªèæ ®äºé
ã³ã³ããã¯ãšãªã®ããã©ãŒãã³ã¹ãæé©åããéã«ã¯ãã°ããŒãã«ãªãªãŒãã£ãšã³ã¹ãééãã倿§ãªããã€ã¹ããã©ãŠã¶ãããã³ãããã¯ãŒã¯æ¡ä»¶ãèæ ®ããããšãäžå¯æ¬ ã§ãã
- ããã€ã¹ã®æ©èœïŒäœã¹ããã¯ã®ããã€ã¹ã§ã¯ãè€éãªã¬ã€ã¢ãŠããé »ç¹ãªã¯ãšãªã®åè©äŸ¡ã«èŠåŽããå¯èœæ§ããããŸãããããã®ããã€ã¹ã§ã®ã³ã³ããã¯ãšãªã®èšç®ãªãŒããŒããããæå°éã«æããããã«ã³ãŒããæé©åããŠãã ããã
- ãã©ãŠã¶ã®äºææ§ïŒã¿ãŒã²ãããªãŒãã£ãšã³ã¹ã䜿çšãããã©ãŠã¶ãšã³ãŒããäºææ§ãããããšã確èªããŠãã ãããã³ã³ããã¯ãšãªã¯å¹ åºããã©ãŠã¶ã§ãµããŒããããŠããŸãããå€ããã©ãŠã¶ã§ã¯ããªãã£ã«ã代æ¿ãœãªã¥ãŒã·ã§ã³ãå¿ èŠã«ãªãå ŽåããããŸããããã°ã¬ãã·ããšã³ãã³ã¹ã¡ã³ãã®äœ¿çšãæ€èšããŠãã ããã
- ãããã¯ãŒã¯æ¡ä»¶ïŒã€ã³ã¿ãŒãããæ¥ç¶ãé ããŸãã¯äžå®å®ãªå°åã®ãŠãŒã¶ãŒã¯ããªãœãŒã¹ã®ããŒãã«é å»¶ãçµéšããå¯èœæ§ãããããããã³ã³ããã¯ãšãªã«é¢é£ããããã©ãŒãã³ã¹åé¡ãæªåãããå¯èœæ§ããããŸãããããã¯ãŒã¯ãªã¯ãšã¹ãã®æ°ãæå°éã«æããã¢ã»ããã®ãµã€ãºãåæžããããã«ã³ãŒããæé©åããŠãã ãããç»åæé©åãã³ãŒãã®ãããã¡ã€ãªã©ã®ææ³ã䜿çšããŠãã ãããã³ã³ãã³ãããªããªãŒãããã¯ãŒã¯ïŒCDNïŒã¯ãã³ã³ãã³ããã°ããŒãã«ã«é ä¿¡ããããŒãæéãæ¹åããã®ã«éåžžã«åœ¹ç«ã¡ãŸãã
ã³ã³ããã¯ãšãªå®è£ ã®ãã¹ããã©ã¯ãã£ã¹
- ã·ã³ãã«ã«å§ããïŒåºæ¬çãªã³ã³ããã¯ãšãªã®å®è£ ããå§ããå¿ èŠã«å¿ããŠåŸã ã«è€éããå ããŠãã ããã
- æå³ã®ããååã䜿çšããïŒã³ãŒãã®å¯èªæ§ãšä¿å®æ§ãåäžãããããã«ãã³ã³ããã¯ãšãªã®æ¡ä»¶ã«èª¬æçãªååãéžæããŠãã ããã
- 培åºçã«ãã¹ãããïŒæåŸ éãã«åäœããããšã確èªããããã«ãæ§ã ãªããã€ã¹ãšãã©ãŠã¶ã§ã³ãŒãããã¹ãããŠãã ããã
- ã³ãŒããææžåããïŒä»ã®éçºè ïŒãããŠå°æ¥ã®ããªãèªèº«ïŒãã³ãŒããçè§£ããä¿å®ããããããããã«ãã³ã³ããã¯ãšãªã®å®è£ ãæç¢ºã«ææžåããŠãã ããã
- ããã©ãŒãã³ã¹ãåªå ããïŒã³ã³ããã¯ãšãªãå®è£ ããéã¯ãåžžã«ããã©ãŒãã³ã¹ãåªå ããŠãã ãããæœåšçãªããã«ããã¯ãç¹å®ã察åŠããããã«ããŠã§ããµã€ãã®ããã©ãŒãã³ã¹ã宿çã«ç£èŠããã³ãããã¡ã€ãªã³ã°ããŠãã ããã
- CSSããªããã»ããµã®äœ¿çšãæ€èšããïŒSassãLessã®ãããªããŒã«ã¯ãã³ã³ããã¯ãšãªãå«ãCSSã³ãŒãã®ç®¡çãšæŽçã容æã«ããããšãã§ããŸãã
çµè«
CSSã³ã³ããã¯ãšãªçµæç¡å¹åãšã³ãžã³ã¯ãå¹ççãªã³ã³ããã¯ãšãªããã©ãŒãã³ã¹ã®éèŠãªæ§æèŠçŽ ã§ãããã®ãšã³ãžã³ã®ä»çµã¿ãçè§£ããé©åãªæé©åæŠç¥ãå®è£ ããããšã§ãéçºè ã¯å¹ åºãããã€ã¹ãšãã©ãŠã¶ã§ããŸãæ©èœããã¬ã¹ãã³ã·ãã§åçãªãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ãäœæããã°ããŒãã«ãªãªãŒãã£ãšã³ã¹ã«ããžãã£ããªãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãä¿èšŒã§ããŸãããŠã§ããµã€ããé²åããã«ã€ããŠãæœåšçãªããã©ãŒãã³ã¹ã®ããã«ããã¯ãç¹å®ã察åŠããããã«ã¯ãç¶ç¶çãªç£èŠãšãããã¡ã€ãªã³ã°ãäžå¯æ¬ ã§ããããšãå¿ããªãã§ãã ããã